package com.cougil.uoc.seghismed.business;

import com.cougil.uoc.seghismed.model.Usuari;
import com.cougil.uoc.seghismed.model.comunicacions.Resposta;

/**
 * Interfície que defineix els principals métodes emprats per a la comunicació entre les aplicacions
 * clients i servidor
 * 
 * @author Ignacio Cougil Jares
 * 
 */
public interface CoreClientService {

	/**
	 * Intenta autenticar a l'usuari contra el servidor
	 *
	 * @return Resposta desxifrada {@link Resposta} per a l'usuari que va realitzar la
	 *         petició
	 */
	public Resposta autenticar();

	/**
	 * Retorna una instància que representa l'usuari validat a l'aplicació. En una
	 * implementació real, possiblement caldria derivar aquesta lògica en un altre servei
	 *
	 * @return Usuari amb les seves dades informades
	 */
	public Usuari getUsuari();

	/**
	 * Fi de sessió explicit per a lliberar recursos i desconnectar l'usuari
	 *
	 * @return Resposta desxifrada per a l'usuari que va realitzar la petició
	 */
	public Resposta sortir();

}
